Allow GPX reader to terminate if it detects Invalid state.
authorrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 11 Nov 2013 03:24:56 +0000 (03:24 +0000)
committerrobertlipe <robertlipe@f51c46e8-681c-474f-0cfe-069cfd0219fb>
Mon, 11 Nov 2013 03:24:56 +0000 (03:24 +0000)
gpsbabel/gpx.cc

index 532bb6137a0896b70fdbbaaaec49656e08ace75d..9a455a2686e94d859baba72bf568b1230ac1094e 100644 (file)
@@ -1290,7 +1290,7 @@ gpx_wr_deinit(void)
 void
 gpx_read(void)
 {
-  while (!reader->atEnd())  {
+    for (bool atEnd = false; !reader->atEnd() && !atEnd;)  {
     reader->readNext();
     // do processing
     switch (reader->tokenType()) {
@@ -1316,10 +1316,15 @@ gpx_read(void)
       gpx_cdata(reader->text().toString());
       break;
 
+    case QXmlStreamReader::Invalid:
+      atEnd = true;
+      break;
+
     default:
       break;
     }
   }
+
   if (reader->hasError())  {
     fatal(MYNAME ":Read error: %s (%s, line %ld, col %ld)\n",
           CSTR(reader->errorString()),